const wx = require('weixin-js-sdk')
// 微信获取jssdk工具
export default Vue => {
  Vue.prototype.$wxReady = async function (jsApiList = [
    'scanQRCode',
    'onMenuShareAppMessage',
    'onMenuShareTimeline',
    'openLocation',
    'hideMenuItems'
  ]) {
    if (!Vue.prototype.$env.isWX) {
      return false
    }
    let url = window.location.href.split('#')[0]
    let config = this.$cache.getSCache(`sign-${url}`)
    if (config) {
      // config = JSON.parse(config)
      return wx
    } else {
      let config = await this.$ajax.get('/pay/wxConfigSign.json', {
        url
      })

      wx.config({
        ...config,
        jsApiList // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
      })
    }
    let that = this
    // eslint-disable-next-line no-undef
    return new Promise((resolve, reject) => {
      wx.ready(() => {
        that.$cache.setSCache(`sign-${url}`, config)
        resolve(wx)
        wx.error(function (res) {
          that.$cache.removeSCache(`sign-${url}`)
          resolve(false)
          // console.error(JSON.stringify(res), 99)
          // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
        })
      })
    })
  }
}
